#!/bin/bash

# 使用说明：
# ./build.sh <前端参数> <后端参数>
# 参数说明：
#   前端参数：
#     1 表示打包前端并上传
#     2 表示直接上传前端（不打包）
#   后端参数：
#     1 表示打包后端并上传
#     2 表示直接上传后端（不打包）
# 示例：
#   ./build.sh 1 1  # 打包前端和后端，并上传到服务器
#   ./build.sh 2 2  # 直接上传前端和后端（不打包）
#   ./build.sh 1 2  # 打包前端并上传，直接上传后端（不打包）

echo "开始执行脚本..."

# 当前路径
orginPath=$(pwd)

# 远程服务器信息
REMOTE_HOST="root@8.220.215.26"
webAddress="$REMOTE_HOST:/compose/web"       # 定义前端打包文件地址变量
serverAddress="$REMOTE_HOST:/compose/server" # 定义后端打包文件地址变量

# 打包前端
if [ "$1" = "1" ]; then
	echo "开始打包前端..."
	cd web
	npm run build:prod
	echo "前端打包完成"
fi

# 打包后端
if [ "$2" = "1" ]; then
	echo "开始打包后端..."
	cd $orginPath
	cd main
	CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags "-X shi_project/main/config.Env=pro" -o main main.go
	echo "后端打包完成"
fi

# 返回到原始路径
cd $orginPath
echo "开始上传至服务器..."

# 上传前端到服务器
if [ "$1" = "1" ] || [ "$1" = "2" ]; then
	echo "上传前端到服务器..."
	ssh $REMOTE_HOST "mkdir -p /compose/web" # 在服务器上创建web目录
	scp -r web/dist $webAddress
	echo "前端上传完成"
fi

# 上传后端到服务器
if [ "$2" = "1" ] || [ "$2" = "2" ]; then
	echo "上传后端到服务器..."
	ssh $REMOTE_HOST "mkdir -p /compose/server" # 在服务器上创建server目录
	scp -r main/main $serverAddress
	echo "后端上传完成"
fi

echo "上传服务器成功!"
echo "开始部署!"

ssh $REMOTE_HOST "bash /compose/replace $1 $2"

echo "所有任务已完成，按任意键结束。"
read -n 1




